<?php
require_once("{$CfgPara->root}/class/mysql.func.php");
require_once("{$CfgPara->root}/class/make_img_name.class.php");

/**
 * 用户操作保存/获取类
 * @version 1.0
 * @author Human
 */
class user_operate
{
    /**
     * 发布作品
     */
    const WorkRelease = 0;
    /**
     * 作品投稿
     */
    const WorkForTopic = 1;
    /**
     * 作品推荐
     */
    const WorkUp = 2;
    /**
     * 作品分享
     */
    const WorkShare = 3;
    /**
     * 作品举报
     */
    const WorkReport = 4;
    /**
     * 作品收藏
     */
    const WorkCollect = 5;
    /**
     * 作品评论
     */
    const WorkCommend = 6;
    /**
     * 作品评论回复
     */
    const WorkCommendReply = 7;
    /**
     * 作品评论点赞
     */
    const WorkCommendUp = 8;
    /**
     * 作品评论举报
     */
    const WorkCommentReport = 9;
    /**
     * 关注专题
     */
    const TopicUp = 20;
    /**
     * 鞋主秀发布
     */
    const ShoeShowRelease = 40;
    /**
     * 鞋主秀推荐
     */
    const ShoeShowUp = 41;
    /**
     * 鞋主秀分享
     */
    const ShoeShowShare = 42;
    /**
     * 鞋主秀举报
     */
    const ShoeShowReport = 43;
    /**
     * 鞋主秀收藏
     */
    const ShoeShowCollect = 44;
    /**
     * 鞋主秀评论
     */
    const ShoeShowComment = 45;
    /**
     * 鞋主秀评论回复
     */
    const ShoeShowCommentReply = 46;
    /**
     * 鞋主秀评论点赞
     */
    const ShoeShowCommentUp = 47;
    /**
     * 鞋主秀评论举报
     */
    const ShoeShowCommentReport = 48;

    public function __construct($dbPara = NULL)
    {
        if ($dbPara != null) {
            db_connect($dbPara);
        }
    }

    /**
     * 获取操作总数 正确返回数量 错误返回错误信息
     * @param int $user_id
     */
    function operate_count($user_id)
    {
        if (!is_numeric($user_id)) return '获取操作数时，用户信息错误';
        $result = db_query("SELECT Count(1) FROM `user_operate` 
                            WHERE `UserId` = {$_SESSION['user_id']}");
        if ($result !== false) {
            if ($count = $result->fetch_array()) {
                return $count[0];
            } else {
                return '获取操作数出错';
            }
        } else {
            return db_error();
        }
    }


    /**
     * 操作记录保存 成功返回TRUE 失败返回错误信息
     * @param int $type 操作类型
     * @param int $user_id 当前操作人员Id
     * @param int $op_id 操作内容的Id 如发布作品 则为作品Id
     */
    function operate_save($type, $user_id, $op_id)
    {
        $result = db_query("INSERT INTO `user_operate` 
                            SET `UserId` = {$user_id},
                                `Type` = '{$type}', 
                                `OpId` = '{$op_id}'");
        if ($result === TRUE) {
            return TRUE;
        } else {
            return db_error();
        }
    }

    /**
     * 获取操作记录表的2维数组
     * [x][0]标题;[1]标题与副标题间的连接词;[2]副标题;[3]时间;[4]操作标注
     * 获取失败将返回失败信息
     * @param int $user_id 用户Id
     * @param int $page 当前页
     * @param int $page_size 每页条目数
     */
    function operate_list($user_id, $page, $page_size, $httproot)
    {
        $limit_offset = ($page - 1) * $page_size;//计算偏移量
        $sql_str = "SELECT `Type`,`OpId`,`OpDt` 
                    FROM `user_operate` WHERE `UserId` = {$_SESSION['user_id']} 
                    ORDER BY `OpDt` DESC 
                    LIMIT {$limit_offset},{$page_size}";
        $result = db_query($sql_str);
        if ($result !== false) {
            $sql_str = '';
            $rows = array();
            $len = 0;
            while ($row = $result->fetch_object()) {
                try {
                    $type = (int)$row->Type;
                    if ($type === $this::WorkForTopic || $type === $this::TopicUp) {
                        $sql_str .= "SELECT `Name` as Content, `Picture` FROM `topic` WHERE `Id` = {$row->OpId} UNION ALL ";
                    } elseif ($type === $this::WorkCommend || $type === $this::WorkCommendReply || $type === $this::WorkCommendUp || $type === $this::WorkCommentReport) {
                        $sql_str .= "SELECT `works`.`Name` as Content, `works`.`Picture` as Picture FROM `works`,`works_comment` WHERE `works_comment`.`Id` = {$row->OpId} AND `works`.`Id` = `works_comment`.`WorkId` UNION ALL ";
                    } elseif ($type >= 0 && $type < 20) {
                        $sql_str .= "SELECT `Name` as Content, `Picture` FROM `works` WHERE `Id` = {$row->OpId} UNION ALL ";
                    } elseif ($type === $this::ShoeShowComment || $type === $this::ShoeShowCommentReply || $type === $this::ShoeShowCommentReport || $type === $this::ShoeShowCommentUp) {
                        $sql_str .= "SELECT `shoe_show`.`Introd` as Content,`shoe_show`.`Picture` as Picture FROM `shoe_show`,`show_comment` WHERE `show_comment`.`Id` = {$row->OpId} AND `shoe_show`.`Id` = `show_comment`.`ShowId` UNION ALL ";
                    } elseif ($type >= 40 && $type < 60) {
                        $sql_str .= "SELECT `Introd` as Content,`Picture` FROM `shoe_show` WHERE `Id` = {$row->OpId} UNION ALL ";
                    } else {
                        return '用户数据错误';
                    }
                    $rows[$len] = array($type, $row->OpDt);//记录操作类型 与操作时间
                    $len++;

                } catch (Exception $ex) {
                    return $ex;
                }
            }
            if ($sql_str !== '') {
                $sql_str = substr($sql_str, 0, strlen($sql_str) - 10); //查询语句删除掉最后的'UNION ALL '
                $result2 = db_query($sql_str);
                $list = array();
                if ($result2 !== false) {
                    for ($i = 0; $i < $len; $i++) {
                        if ($row2 = $result2->fetch_array()) {

                            $pic_name = make_img_name::make_img_mini_name($row2[1]);
                            switch ($rows[$i][0]) {
                                case $this::WorkUp:
                                    $list[$i] = array(
                                        '',         //标题
                                        '推荐作品：',//标题与副标题间的连接词
                                        $row2[0],   //副标题
                                        $rows[$i][1],   //时间
                                        '',          //操作标注
                                        "{$httproot}/works_pic/{$pic_name}" //图片内容
                                    );
                                    break;
                                case $this::WorkShare:
                                    $list[$i] = array(
                                        '',         //标题
                                        '分享作品：',//标题与副标题间的连接词
                                        $row2[0],   //副标题
                                        $rows[$i][1],   //时间
                                        '',          //操作标注
                                        "{$httproot}/works_pic/{$pic_name}"  //图片内容
                                    );
                                    break;
                                case $this::WorkReport:
                                    $list[$i] = array(
                                        '',         //标题
                                        '举报作品：',//标题与副标题间的连接词
                                        $row2[0],   //副标题
                                        $rows[$i][1],   //时间
                                        '',          //操作标注
                                        "{$httproot}/works_pic/{$pic_name}"  //图片内容
                                    );
                                    break;
                                case $this::WorkRelease:
                                    $list[$i] = array(
                                        $row2[0],   //标题
                                        '',         //标题与副标题间的连接词
                                        '',         //副标题
                                        $rows[$i][1],   //时间
                                        '发布作品',  //操作标注
                                        "{$httproot}/works_pic/{$pic_name}"  //图片内容
                                    );
                                    break;
                                case $this::WorkForTopic:
                                    $list[$i] = array(
                                        '',   //标题
                                        '加入专题:',         //标题与副标题间的连接词
                                        $row2[0],         //副标题
                                        $rows[$i][1],   //时间
                                        '',  //操作标注
                                        "{$httproot}/topic_pic/{$pic_name}",  //图片内容
                                        'am-circle' //图片视图css类
                                    );
                                    break;
                                case $this::WorkCommentReport:
                                    $list[$i] = array(
                                        '',   //标题
                                        '举报作品的评论:',         //标题与副标题间的连接词
                                        $row2[0],         //副标题
                                        $rows[$i][1],   //时间
                                        '',  //操作标注
                                        "{$httproot}/works_pic/{$pic_name}"  //图片内容
                                    );
                                    break;
                                case $this::WorkCommendUp:
                                    $list[$i] = array(
                                        '',                 //标题
                                        '点赞作品的评论:',   //标题与副标题间的连接词
                                        $row2[0],           //副标题
                                        $rows[$i][1],           //时间
                                        '',                  //操作标注
                                        "{$httproot}/works_pic/{$pic_name}"  //图片内容
                                    );
                                    break;
                                case $this::WorkCommendReply:
                                    $list[$i] = array(
                                        '',   //标题
                                        '回复作品的评论:',         //标题与副标题间的连接词
                                        $row2[0],         //副标题
                                        $rows[$i][1],   //时间
                                        '',  //操作标注
                                        "{$httproot}/works_pic/{$pic_name}"  //图片内容
                                    );
                                    break;
                                case $this::WorkCommend:
                                    $list[$i] = array(
                                        '',         //标题
                                        '评论作品：',//标题与副标题间的连接词
                                        $row2[0],   //副标题
                                        $rows[$i][1],   //时间
                                        '',          //操作标注
                                        "{$httproot}/works_pic/{$pic_name}"  //图片内容
                                    );
                                    break;
                                case $this::WorkCollect:
                                    $list[$i] = array(
                                        '',   //标题
                                        '收藏作品:',         //标题与副标题间的连接词
                                        $row2[0],         //副标题
                                        $rows[$i][1],   //时间
                                        '',  //操作标注
                                        "{$httproot}/works_pic/{$pic_name}"  //图片内容
                                    );
                                    break;
                                case $this::TopicUp:
                                    $list[$i] = array(
                                        '',   //标题
                                        '关注了专题:',         //标题与副标题间的连接词
                                        $row2[0],         //副标题
                                        $rows[$i][1],   //时间
                                        '',  //操作标注
                                        "{$httproot}/topic_pic/{$pic_name}",  //图片内容
                                        'am-circle' //图片视图css类
                                    );
                                    break;
                                case $this::ShoeShowUp:
                                    $list[$i] = array(
                                        '',         //标题
                                        '鞋主秀推荐：',//标题与副标题间的连接词
                                        $row2[0],   //副标题
                                        $rows[$i][1],   //时间
                                        '',          //操作标注
                                        "{$httproot}/shoe_show_pic/{$pic_name}"  //图片内容
                                    );
                                    break;
                                case $this::ShoeShowShare:
                                    $list[$i] = array(
                                        '',         //标题
                                        '鞋主秀分享：',//标题与副标题间的连接词
                                        $row2[0],   //副标题
                                        $rows[$i][1],   //时间
                                        '',          //操作标注
                                        "{$httproot}/shoe_show_pic/{$pic_name}" //图片内容
                                    );
                                    break;
                                case $this::ShoeShowReport:
                                    $list[$i] = array(
                                        '',         //标题
                                        '鞋主秀举报：',//标题与副标题间的连接词
                                        $row2[0],   //副标题
                                        $rows[$i][1],   //时间
                                        '',          //操作标注
                                        "{$httproot}/shoe_show_pic/{$pic_name}" //图片内容
                                    );
                                    break;
                                case $this::ShoeShowRelease:
                                    $list[$i] = array(
                                        '',                 //标题
                                        '',   //标题与副标题间的连接词
                                        $row2[0],           //副标题
                                        $rows[$i][1],           //时间
                                        '鞋主秀发布',                 //操作标注
                                        "{$httproot}/shoe_show_pic/{$pic_name}" //图片内容
                                    );
                                    break;
                                case $this::ShoeShowCommentUp:
                                    $list[$i] = array(
                                        '',         //标题
                                        '鞋主秀的评论点赞：',//标题与副标题间的连接词
                                        $row2[0],   //副标题
                                        $rows[$i][1],   //时间
                                        '',          //操作标注
                                        "{$httproot}/shoe_show_pic/{$pic_name}" //图片内容
                                    );
                                    break;
                                case $this::ShoeShowCommentReport:
                                    $list[$i] = array(
                                        '',         //标题
                                        '举报鞋主秀的评论：',//标题与副标题间的连接词
                                        $row2[0],   //副标题
                                        $rows[$i][1],   //时间
                                        '',          //操作标注
                                        "{$httproot}/shoe_show_pic/{$pic_name}" //图片内容
                                    );
                                    break;
                                case $this::ShoeShowCommentReply:
                                    $list[$i] = array(
                                        '',         //标题
                                        '回复鞋主秀的评论：',//标题与副标题间的连接词
                                        $row2[0],   //副标题
                                        $rows[$i][1],   //时间
                                        '',          //操作标注
                                        "{$httproot}/shoe_show_pic/{$pic_name}" //图片内容
                                    );
                                    break;
                                case $this::ShoeShowComment:
                                    $list[$i] = array(
                                        '',         //标题
                                        '评论鞋主秀：',//标题与副标题间的连接词
                                        $row2[0],   //副标题
                                        $rows[$i][1],   //时间
                                        '',          //操作标注
                                        "{$httproot}/shoe_show_pic/{$pic_name}" //图片内容
                                    );
                                    break;
                                case $this::ShoeShowCollect:
                                    $list[$i] = array(
                                        '',         //标题
                                        '收藏鞋主秀：',//标题与副标题间的连接词
                                        $row2[0],   //副标题
                                        $rows[$i][1],   //时间
                                        '',          //操作标注
                                        "{$httproot}/shoe_show_pic/{$pic_name}" //图片内容
                                    );
                                    break;
                            }
                        }
                    }
                    return $list;
                } else {
                    return '读取操作记录具体信息失败';
                }
            } else {
                return '暂无操作记录';
            }
        } else {
            return db_error();
        }
    }

}
